Agile Methods
Από την δεκαετία του 1950 που ξεκίνησε η ανάπτυξη λογισμικού πολλές διαφορετικές μέθοδοι (methods) και μοντέλα διαδικασιών (process models) έχουν αναπτυχθεί και χρησιμοποιηθεί για την παραγωγή ποιοτικού λογισμικού. Οι πιο πολλές από αυτές που ονομάζονται 'βαριές' ή 'παραδοσιακές' μέθοδοι είναι προσανατολισμένες στη βαριά τεκμηρίωση και στις αυστηρά προκαθορισμένες διαδικασίες (Boehm,  2002). Οι μέθοδοι αυτοί που χρησιμοποιούν συνήθως το μοντέλο του καταρράκτη για την ανάπτυξη του λογισμικού έχουν κατηγορηθεί ως ανελαστικές, μη παραγωγικές, και γραφειοκρατικές. Θεωρούνται μη παραγωγικές διότι οι φάσεις ανάπτυξης του λογισμικού είναι πολλές και μεγάλης διάρκειας επιβραδύνοντας τον συνολικό χρόνο ανάπτυξης. Ωστόσο, το κυριότερο από τα προβλήματα αυτών των μεθόδων είναι ότι προσχεδιάζουν το μεγαλύτερο κομμάτι της διαδικασίας ανάπτυξης του λογισμικού με μεγάλη λεπτομέρεια και σε βάθος χρόνου, προσπαθώντας να μαντέψουν και να προλάβουν κάθε πρόβλημα που μπορεί να προκύψει. Αυτή είναι μία σημαντική ενδογενής αδυναμία η οποία τις καθιστά ανελαστικές και ανίκανες να αντιδράσουν στις αλλαγές που προκύπτουν, όπως για παράδειγμα στις αλλαγές των απαιτήσεων των πελατών που είναι ένα συνηθισμένο γεγονός. Με την αλλαγή της χιλιετίας εξελίχθηκε μία νέα ομάδα μεθόδων η οποία με την ιδρυτική της διακήρυξη Agile  Manifesto (Agile Alliance, 2001), το 2001, και με την ονομασία ευέλικτες μέθοδοι (agile methods) υπόσχεται προσαρμοστικότητα και ανταπόκριση στις αλλαγές, παραγωγικότερες πρακτικές και λιγότερη γραφειοκρατία. Το όνομα ευέλικτες αναφέρεται κυρίως στην συνολική ικανότητα να προσαρμόζουν κατάλληλα τη διαδικασία ανάπτυξης, όταν προκύπτουν αλλαγές στην πορεία του έργου.
Οι ευέλικτες μέθοδοι ενσωμάτωσαν μια ευρεία συλλογή από καλές και δοκιμασμένες αξίες και πρακτικές που βοηθούν στην ανάπτυξη ποιοτικού λογισμικού. Η ανάπτυξη του λογισμικού γίνεται σε
σύντομους επαναληπτικούς (iterative) και αυξητικούς (incremental) κύκλους, παρέχοντας την δυνατότητα της προσαρμογής και αντίδρασης στις αλλαγές που τίθενται από το διαρκώς μεταβαλλόμενο επιχειρησιακό περιβάλλον (Beck, 2000; Cockburn, 2002; Fowler, 2006; Highsmith, 2002). Με σαφή προτίμηση στην επικοινωνία πρόσωπο με πρόσωπο για τον περιορισμό των παραγομένων εγγράφων και σε στενή συνεργασία με τον πελάτη οι κατασκευαστές και οι διαχειριστές του έργου επικεντρώνονται στην ανάπτυξη λογισμικού, που θεωρείται το πρωταρχικό μέτρο προόδου. Σαν προσαρμόσιμες (adaptive) μέθοδοι και όχι προφητικές, όπως οι παραδοσιακές μέθοδοι, καλωσορίζουν τις αλλαγές ιδιαίτερα στις απαιτήσεις των πελατών, που είναι ευμετάβλητες και αβέβαιες. Οι ευέλικτες μέθοδοι είναι προσανατολισμένες στους ανθρώπους και όχι στις διαδικασίες, όπως οι παραδοσιακές μέθοδοι και βασίζονται πολύ στην ομαδική εργασία. Υπόσχονται ποιοτικότερο λογισμικό και ταχύτερη ανάπτυξη. Οι σημαντικότερες ευέλικτες μέθοδοι είναι οι εξής: Ακραίος Προγραμματισμός (Extreme Programming - XP) (Beck 2000), Dynamic Systems Development Method (DSDM) (Stapleton and MacDonald, 1997), SCRUM (Schwaber 2001), Feature Driven Design (FDD) (Coad et al. 1999), CrystalClear (Cockburn 2001; Cockburn 2004), και Agile Modelling (Ambler 2002).
Οι πιο διαδεδομένες από αυτές τις μεθόδους είναι ο
ακραίος προγραμματισμός (eXtreme Programming  - XP) και η Scrum. Δημιουργήθηκαν για να αντιμετωπίσουν τόσο τα προβλήματα, που προκαλούνται από τις μεταβολές των απαιτήσεων, όσο και εκείνα που προέρχονται από τους κινδύνους στα έργα λογισμικού. Βασίζονται σε ένα σύνολο από  αρχές και πρακτικές, που υποστηρίζουν την ολοκλήρωση του έργου μέσα στα προβλεπόμενα χρονικά όρια, ενώ παράλληλα επιτρέπουν στους υπεύθυνους ανάπτυξης του λογισμικού να ανταποκρίνονται στις μεταβαλλόμενες απαιτήσεις του πελάτη καθ' όλη τη διάρκεια του κύκλου παραγωγής. Δίνοντας ιδιαίτερη έμφαση στην ομαδική εργασία οι πελάτες, διαχειριστές και κατασκευαστές του λογισμικού συμμετέχουν όλοι σε μία ομάδα με στόχο την παραγωγή λογισμικού υψηλής ποιότητας και την ικανοποίηση του πελάτη. Ένας από τους κυριότερους λόγους της επιτυχίας αυτών των μεθόδων και της ευρείας των αποδοχής στην βιομηχανία λογισμικού είναι ακριβώς η επίτευξη του στόχου της ικανοποίησης του πελάτη.
Όπως συμβαίνει σε κάθε νέα μεθοδολογία έχει ξεκινήσει η αντιπαράθεση μεταξύ των υποστηρικτών και των αντιπάλων για τα πλεονεκτήματα και μειονεκτήματα των ευέλικτων μεθόδων. Παράλληλα έχει αρχίσει διεθνώς η εμπειρική διερεύνηση των καινοτομιών που εισάγονται από τις πρακτικές των μεθόδων αυτών και ιδιαίτερα του ακραίου προγραμματισμού που είναι η πιο δημοφιλής από τις μεθόδους. Η εμπειρική έρευνα των ευέλικτων μεθόδων και ιδιαίτερα του ακραίου προγραμματισμού
και των πρακτικών του (προγραμματισμός ανά ζεύγη), που παρουσιάζεται στην παρούσα διατριβή, διεξάγεται για πρώτη φορά στην Ελλάδα.


ΑΡΧΕΣ - ΑΞΙΕΣ - ΙΔΙΟΤΗΤΕΣ
Ευελιξία (agility) είναι η ικανότητα της προσαρμογής και επαναπροσδιορισμού ενός αναπτυσσόμενου και συνεχώς εξελισσόμενου συστήματος, στην περίπτωση που εμφανίζονται αλλαγές στις αρχικές θεωρήσεις και παραδοχές. Οι οργανισμοί, που χρησιμοποιούν ευέλικτες μεθόδους, βλέπουν την αλλαγή σαν ευκαιρία βελτίωσης και προόδου και όχι σαν απειλή. Οι ευέλικτες μέθοδοι είναι:

Επαναληπτικές (iterative): Αρχικά παραδίδεται ένα πλήρες σύστημα και στη συνέχεια γίνονται αλλαγές στη λειτουργία κάθε υποσυστήματος σε κάθε νέα έκδοση.

Αυξητικές (incremental): Το σύστημα, όπως ορίζεται στις απαιτήσεις, χωρίζεται σε υποσυστήματα με βάση τη λειτουργία τους. Νέες λειτουργίες προστίθενται σε κάθε νέα έκδοση.

Αυτο-διοργανούμενες (self-organizing): Η ομάδα έχει την αυτονομία να οργανώνεται έτσι, ώστε να επιτύχει την βέλτιστη ολοκλήρωση των υποσυστημάτων με τον καλύτερο δυνατό τρόπο.

Προκύπτουσες (emergent): Οι απαιτήσεις και η τεχνολογία, που θα χρησιμοποιηθεί, προκύπτουν κατά τη διάρκεια του κύκλου ανάπτυξης.

Οι ευέλικτες μέθοδοι ορίζονται από τέσσερεις σημαντικές αξίες:

Άτομα και Αλληλεπιδράσεις αντί διαδικασίες και εργαλεία
Οι κατασκευαστές, οι ελεγκτές λαθών, οι διευθυντές έργων, οι σχεδιαστές, οι πελάτες και πώς αυτοί συνεργάζονται και αλληλεπιδρούν μεταξύ τους είναι οι σημαντικότεροι παράγοντες στην ανάπτυξη του λογισμικού. Αν η συνεργασία αυτή δεν είναι επιτυχής, οι διαδικασίες και τα εργαλεία δεν πρόκειται να αποτελέσουν σημαντική βοήθεια.

Καθαρός Κώδικας αντί γραπτής τεκμηρίωσης
Ο πρωταρχικός μας στόχος είναι η ανάπτυξη απλού και ποιοτικού κώδικα, που είναι πιο κατανοητός από μακροσκελή έγγραφα και διαγράμματα τεκμηρίωσης. Η ολοκληρωμένη τεκμηρίωση είναι σημαντική για να εξηγεί ποιος είναι ο στόχος του προγράμματος και πως μπορούμε να το χειριστούμε αλλά ο ρόλος της θα είναι πάντα δευτερεύων και συμπληρωματικός.  

Συνεργασία με τον Πελάτη αντί αυστηρών συμβολαίων
Η στενή συνεργασία με τον πελάτη, ο οποίος προσδιορίζει τις απαιτήσεις, είναι απαραίτητη. Η συνεργασία αυτή είναι συνήθως δύσκολη, αφού ο πελάτης αλλάζει συχνά γνώμη σχετικά με τις απαιτήσεις του προγράμματος αλλά αναπόφευκτη. Το να υπάρχει ένα συμβόλαιο με τον πελάτη, που θα καθορίζει τις ευθύνες και τα δικαιώματα του καθενός και θα περιγράφει την μεταξύ τους σχέση, είναι κάτι το σημαντικό. Ωστόσο, το συμβόλαιο δεν μπορεί να αποτελέσει υποκατάστατο της επικοινωνίας.

Ανταπόκριση σε αλλαγές αντί ακολουθούμενου σχεδίου
Κατά τη διάρκεια ανάπτυξης του λογισμικού αλλάζουν οι απαιτήσεις των πελα-τών, το επιχειρηματικό περιβάλλον ακόμα και η ίδια η τεχνολογία. Αυτές οι αλλαγές δεν αφήνουν ανεπηρέαστη την ανάπτυξη. Για αυτό το λόγο θα πρέπει η ανάπτυξη να μπορεί να ικανοποιεί άμεσα την ανάγκη για αλλαγές. Αυτό δεν σημαίνει ότι απορρίπτεται το πλάνο χρονοπρογραμματισμού αλλά θα πρέπει τα πλάνα να είναι περισσότερο ευέλικτα, λαμβάνοντας υπόψη τους τις περιπτώσεις αλλαγών, που μπορεί να προκύψουν ξαφνικά.

Στη διακήρυξη των ευέλικτων μεθόδων καθορίστηκαν επιπλέον
δώδεκα αρχές που καθοδηγούν τον τρόπο ανάπτυξης:
1.   Βασική προτεραιότητα αποτελεί η ικανοποίηση του πελάτη με την συνεχή  παράδοση σημαντικού λογισμικού από τα
      πρώτα κιόλας στάδια της παραγωγής.
2.   Η παράδοση τμημάτων λογισμικού γίνεται ανά δύο εβδομάδες έως και ανά δύο μήνες. Σημαντική είναι η όσο το
      δυνατόν  συχνότερη παράδοση.
3.   Οι μεταβαλλόμενες απαιτήσεις είναι καλοδεχούμενες ακόμα και σε προχωρημένο στάδιο ανάπτυξης. Οι διαδικασίες,
      που εφαρμόζονται έχουν την δυνατότητα να υποτάσσουν την αλλαγή προς όφελος του πελάτη.
4.   Οι πελάτες και οι υπεύθυνοι ανάπτυξης του συστήματος πρέπει να συνεργάζονται καθημερινά μέχρι την παραγωγή του
      τελικού προϊόντος.
5.   Σημαντική είναι η ανάθεση των τμημάτων του συστήματος σε ικανό και απο-τελεσματικό προσωπικό και η εξασφάλιση
      ευνοϊκού περιβάλλοντος εμπιστοσύνης και υποστήριξης.
6.   Ο καλύτερος τρόπος μεταβίβασης και ανταλλαγής πληροφοριών με την ομάδα παραγωγής είναι η διαπροσωπική
      συζήτηση.
7.   Το καλύτερο και πιο αξιόπιστο μέτρο, που επιβεβαιώνει την πρόοδο, είναι το να λειτουργούν σωστά τα τμήματα
      λογισμικού τα οποία κατασκευάζονται.
8.   Οι ευέλικτες διαδικασίες προωθούν τον σταθερό ρυθμό ανάπτυξης του συστήματος, ο οποίος πρέπει να ακολουθείται
      τόσο από τον πελάτη όσο και από τους υπεύθυνους παραγωγής.
9.   Η ευελιξία ενισχύεται από την συνεχή προσπάθεια για τεχνική αρτιότητα και καλό σχεδιασμό.
10. Η απλοποίηση, με την έννοια της υλοποίησης στόχων με σύντομο αλλά αποτελεσματικό τρόπο, είναι ουσιαστική.
11. Οι καλύτερες αρχιτεκτονικές, απαιτήσεις και σχέδια προκύπτουν από ομάδες, που οργανώνονται μόνες τους.
12. Σε τακτά χρονικά διαστήματα, η ομάδα συζητά τρόπους, ώστε να γίνει περισσότερο αποτελεσματική και
      επαναπροσδιορίζει τη συμπεριφορά της.

Οι ευέλικτες μέθοδοι εισάγουν μία διαφορετική προσέγγιση στον τρόπο ανάπτυξης του λογισμικού. Η προσέγγιση αυτή αφορά την στροφή από τον παραδοσιακό τρόπο, τον προσανατολισμένο στις διαδικασίες και την πλήρη τεκμηρίωση, στον ευέλικτο τρόπο, που είναι προσανατολισμένος στον άνθρωπο και την λιγότερη τεκμηρίωση (Beck, 2000; Boehm and Turner, 2004; Cockburn, 2002; Fowler, 2006; Highsmith 2002). Ακολουθούν τον επαναληπτικό και αυξητικό τρόπο ανάπτυξης και επιτρέπουν την προσαρμοστικότητα και τη μεταβλητότητα, εστιάζοντας πάντα στα νέα στοιχεία, που προκύπτουν κατά την διαδικασία της ανάπτυξης. Η ικανότητα για γρήγορες και συχνές αλλαγές και για γρήγορη παράδοση λογισμικού σημαίνει και την άμεση προσαρμογή της ομάδας (Abrahamsson et al, 2002; Cockburn, 2002;  Highsmith, 2002). Μια προσαρμόσιμη ομάδα μπορεί να προγραμματίσει επακριβώς τις εργασίες που πρέπει να γίνουν την επόμενη εβδομάδα ή το πολύ μέσα στον τρέχοντα μήνα. Από την άλλη πλευρά οι παραδοσιακές μέθοδοι, σαν προφητικές μέθοδοι, εστιάζουν στο μέλλον σχεδιάζοντας με κάθε λεπτομέρεια τις μελλοντικές εξελίξεις. Μία ομάδα που ακολουθεί αυτή τη μεθοδολογία, μπορεί να αναφέρει με κάθε λεπτομέρεια ποια χαρακτηριστικά και ποιες εργασίες έχουν σχεδιαστεί για ολόκληρη την διαδικασία ανάπτυξης. Οι ομάδες αυτές δύσκολα αλλάζουν κατεύθυνση. Αν συμβεί κάποια αλλαγή, τότε το όλο πλάνο του έργου θα πρέπει να αλλάξει. Οπότε όση δουλειά έγινε μέχρι το χρονικό εκείνο σημείο, θα πρέπει να επαναληφθεί. Αυτό το μεγάλο μειονέκτημα των παραδοσιακών μεθόδων είναι η αιτία της κυριαρχίας των ευέλικτων μεθόδων, ιδιαίτερα στα έργα χαμηλού ρίσκου. 
Ο ευέλικτος τρόπος ανάπτυξης λογισμικού θεωρείται καλύτερος, όταν οι ομάδες εργασίας είναι μικρές. Οι περισσότερες ομάδες είναι μέχρι 12 άτομα ή και σε κάποιες περιπτώσεις μέχρι 25. Όσο μεγαλώνει ο αριθμός των ατόμων της ομάδας, δυσκολεύει ο συντονισμός και η επικοινωνία των ατόμων. Η διαπροσωπική επικοινωνία γίνεται δύσκολη και περίπλοκη σε ομάδες που υπερβαίνουν τα 20-40 μέλη. Σε αυτή την περίπτωση είναι απαραίτητη η εφαρμογή κάποιων στρατηγικών κατάτμησης και διαμοίρασης των εργασιών σε περισσότερες υπό-ομάδες. Ένας άλλος παράγοντας, που επηρεάζει την επιτυχή εφαρμογή των ευέλικτων μεθόδων, είναι η επιλογή των ατόμων της ομάδας. Η ομάδα θα πρέπει να διαθέτει έναν αριθμό από ικανά και πεπειραμένα στελέχη. Ικανά στελέχη σημαίνει να είναι άτομα με εμπειρία από τον πραγματικό κόσμο σε τεχνολογικά θέματα, να έχουν φτιάξει παρόμοια συστήματα στο παρελθόν και να διαθέτουν προσόντα καλής επικοινωνίας. Η ομάδα πρέπει να είναι αποτελεσματική ως προς την ποιότητα των ατόμων αλλά και ως προς τον τρόπο συνεργασίας και επικοινωνίας (Cockburn, 2002; Highsmith, 2002). Οι οργανισμοί, που εφαρμόζουν ευέλικτες μεθόδους, θα πρέπει να διαθέτουν ένα περιβάλλον, το οποίο να διευκολύνει την γρήγορη επικοινωνία μεταξύ των μελών της ομάδας. Στην ομάδα συμπεριλαμβάνεται και ο πελάτης, που παρέχει άμεση ανατροφοδότηση. Ουσιαστικά οι ευέλικτες μέθοδοι βασίζονται στην στενή συνεργασία με τον πελάτη, ο οποίος πρέπει να είναι πάντα σε ετοιμότητα. Ο αριθμός των στελεχών, οι ικανότητές τους, οι ρόλοι τους καθώς και ο ρόλος του πελάτη στην ομάδα αποτελούν θέματα συζητήσεων και έρευνας τα τελευταία χρόνια.
Η νέα θεώρηση στον τρόπο ανάπτυξης δεν αφορά τόσο τις νέες πρακτικές, όσο την αναγνώριση του ανθρώπινου παράγοντα ως τον κύριο παράγοντα της επιτυχίας. Οι διευθυντές των έργων πρέπει να είναι ικανοί να καταλαβαίνουν το προσωπικό τους σαν άτομα αλλά σαν μέλη της ομάδας. Αν δεν λαμβάνονται υπόψη οι ικανότητες και οι περιορισμοί των προγραμματιστών, τότε δεν είναι δυνατόν να εφαρμοστούν σωστά και με αποτελεσματικό τρόπο οι πρακτικές των ευέλικτων μεθόδων. Στη σωστή διοίκηση ανάγεται και η έγκαιρη αναγνώριση προειδοποιητικών σημάτων, που υποδεικνύουν την ύπαρξη προβλημάτων στην διαδικασία ανάπτυξης. Το ερώτημα που τίθεται είναι πώς θα γνωρίζει η διοίκηση πότε να λάβει διορθωτικά μέτρα για την ελαχιστοποίηση των κινδύνων. Μια καλή τακτική είναι οι
καθημερινές συνεδριάσεις (stand-up meetings), οι οποίες παρέχουν έναν χρήσιμο τρόπο μέτρησης των προβλημάτων, μέσα από την συζήτηση που γίνεται μεταξύ των μελών της ομάδας. Επίσης ένα προειδοποιητικό σήμα για τον διαχειριστή του έργου είναι όταν η ομάδα μένει πίσω στις προγραμματισμένες επαναλήψεις. Γι' αυτό είναι πολύ σημαντικό να υπάρχουν συχνές επαναλήψεις, ώστε να μπορεί να ελέγχεται αυτό το προειδοποιητικό σήμα.
Υπάρχει μία μερίδα επιστημόνων, που αντιμετωπίζει τις ευέλικτες μεθόδους με σκεπτικισμό και πολλές φορές παρερμηνεύει τις βασικές αρχές και πρακτικές που εισάγουν. Η ανταπόκριση στις αλλαγές αντί ακολουθούμενου σχεδίου, το οποίο είναι μία από τις τέσσερεις προτροπές των ευέλικτων μεθόδων, παρερμηνεύεται σαν έλλειψη σχεδιασμού στην ανάπτυξη και συντελεί στην αύξηση των κινδύνων. Αυτό όμως δεν ισχύει, καθότι ο σχεδιασμός για κάθε επαναληπτικό κύκλο, είναι πλήρης και απόλυτα ακριβής, επιτρέποντας την διασπορά των κινδύνων αλλά και την άμεση ανα-τροφοδότηση, που είναι ένας μηχανισμός μείωσης των κινδύνων. Επίσης αμφισβητείται κατά πόσο όλοι οι κατασκευαστές μπορούν να εφαρμόζουν σωστά τις πρακτικές τις οποίες εισάγουν οι ευέλικτες μέθοδοι, επειδή απαιτείται μια τελείως διαφορετική κουλτούρα πάνω στον τρόπο εργασίας και σκέψης, καθώς και για έλλειψη τεκμηρίωσης. Όλες αυτές οι παρερμηνείες και αμφισβητήσεις αποτελούν στόχο έρευνας, η οποία έχει ξεκινήσει τα τελευταία χρόνια, ώστε να δοθούν τεκμηριωμένες απαντήσεις στον τρόπο χρήσης και στα πλεονεκτήματα που ευαγγελίζονται οι ευέλικτες μέθοδοι. Σε αυτό το πλαίσιο εντάξαμε την ερευνητική μας προσπάθεια.


Η Διασφάλιση Ποιότητας στις Ευέλικτες Μεθόδους ανάπτυξης λογισμικού
 
Οι ευέλικτες μέθοδοι με τον επαναληπτικό και αυξητικό τρόπο ανάπτυξης και τη συνδυασμένη χρήση αποτελεσματικών πρακτικών υπόσχονται ποιοτικότερο λογισμικό μέσα στα χρονικά όρια και τα όρια του προϋπολογισμού, παρέχοντας ταυτόχρονα τη δυνατότητα ικανοποίησης των ασταθών και μεταβαλλόμενων απαιτήσεων των πελατών. Οι πιο πολλές από τις πρακτικές αυτές, όπως οι έλεγχοι πριν την κωδικοποίηση, ο προγραμματισμός σε ζεύγη, η ανακατασκευή του κώδικα, οι διαρκείς ενσωματώσεις του κώδικα, η διαρκής παρουσία του πελάτη, η συνολική  εικόνα του συστήματος, οι έλεγχοι αποδοχής, ο απλός σχεδιασμός, διαθέτουν μηχανισμούς διασφάλισης της ποιότητας. Πολλά άρθρα υποστηρίζουν και εκθειάζουν τα ποιοτικά πλεονεκτήματα των ευέλικτων μεθόδων. Ωστόσο, οι υπερασπιστές τους πρέπει να δώσουν πειστικές απαντήσεις στις ερωτήσεις: Ποια είναι η ποιότητα του παραγόμενου λογισμικού; και ποια στοιχεία τεκμηριώνουν την ανωτερότητα της ποιότητας στις Ευέλικτες Μεθόδους; Δεν υπάρχει πολύ δημοσιευμένη έρευνα που να απαντά σε αυτές τις κρίσιμες ερωτήσεις αλλά ούτε και βιβλιογραφία που να ασχολείται με τα θέματα διασφάλισης της ποιότητας στις ευέλικτες μεθόδους. 
Στο πλαίσιο της ερευνητικής μας προσπάθειας για την εξεύρεση τρόπων ανάπτυξης ποιοτικού λογισμικού με τις Ευέλικτες Μεθόδους, επιμεληθήκαμε την έκδοση ενός βιβλίου με τίτλο
"AGILE SOFTWARE DEVELOPMENT QUALITY ASSURANCE". Για πρώτη φορά το βιβλίο αυτό παρέχει γνώση επάνω στα θέματα της ποιότητας λογισμικού, που αναπτύσσεται με τις ευέλικτες μεθόδους και βασίζεται στην επιστημονική έρευνα διεθνών ερευνητών από τα μεγαλύτερα πανεπιστημιακά και ερευνητικά ιδρύματα του κόσμου, καθώς και στις εμπειρικές αναφορές μεγάλων διεθνών εταιρειών λογισμικού. Οι συγγραφείς των κεφαλαίων του βιβλίου παρουσιά-ζουν, αναλύουν και αναθεωρούν τους τρόπους χρήσης, τις επιτυχίες και τις αποτυχίες, τα πλεονεκτήματα και τα μειονεκτήματα των ευέλικτων μεθόδων, καταθέτοντας προτάσεις για λύσεις και πρότυπα που υποστηρίζουν το στόχο διασφάλισης της ποιότητας του λογισμικού. Η συνεισφορά του βιβλίου αφορά την επιτυχή ποιοτική διαχείριση του ευέλικτου τρόπου ανάπτυξης, προτείνοντας τρόπους ανάλυσης, μέτρησης, χρήσης εργαλείων και τεκμηρίωσης από ποιοτικής άποψης. Επιπλέον, θα βοηθήσει τις εταιρίες και τους εμπλεκόμενους διευθυντές των έργων και τους προγραμματιστές να αποφύγουν όλους εκείνους τους κινδύνους και τις αποτυχίες στα έργα λογισμικού τα οποία αντιμετωπίζουν στις παραδοσιακές μεθόδους.
Το βιβλίο αποτελείται από δώδεκα κεφάλαια, που οργανώνονται σε τέσσερις ενότητες:
Ενότητα Ι:   Εισαγωγή: Ευέλικτες μέθοδοι και ποιότητα
Ενότητα ΙΙ:  Ενσωματωμένη ποιότητα στις ευέλικτες πρακτικές και αξίες ανάπτυξης
Ενότητα ΙΙΙ: Ενσωματωμένη ποιότητα στις ευέλικτες διαδικασίες ανάπτυξης
Ενότητα IV: Ευέλικτες μέθοδοι και ποιότητα: Εμπειρικές αναφορές από τον χώρο της βιομηχανίας λογισμικού  

Στην πρώτη ενότητα παρουσιάζονται και αναλύονται όλες οι πτυχές των θεμάτων ποιότητας στις ευέλικτες μεθόδους και συγκρίνονται με τις παραδοσιακές μεθόδους. Η ενότητα ξεκινά θέτοντας ερωτήματα για το πώς θα επιτευχθεί η ποιότητα στην ανάπτυξη του λογισμικού και για τα προβλήματα που δημιουργούνται από την χρήση των ευέλικτων μεθόδων. Επίσης, προτείνει λύσεις σε κάποια από τα προσδιορισμένα προβλήματα.     
Η δεύτερη ενότητα αναλύει πως επιτυγχάνεται η ποιότητα με την εφαρμογή των πρακτικών ανάπτυξης στις ευέλικτες μεθόδους. Παρέχεται μία πρώτη ανάλυση του πως οι υπεύθυνοι ανάπτυξης χρησιμοποιώντας τις ευέλικτες πρακτικές αυξάνουν την ποιότητα του λογισμικού. Τα κεφάλαια της ενότητας αναλύουν τα θέματα εξασφάλισης της ποιότητας στο καθορισμό των απαιτήσεων, στο χειρισμό των λαθών, και στη διάρκεια της ανάπτυξης χρηστικών διεπιφανειών.          
Στην τρίτη ενότητα αναλύεται  πως επιτυγχάνεται η ποιότητα κατά τη διαδικασία ανάπτυξης του λογισμικού. Αναλύεται πώς εκτελούνται οι διάφορες δραστηριότητες παράλληλα με τη διαδικασία ανάπτυξης και πώς προετοιμάζονται οι ομάδες ανάπτυξης για αποτελεσματική εργασία. Αναλύονται σε ξεχωριστά κεφάλαια θέματα εξασφάλισης ποιότητας στη καταμέτρηση των δραστηριοτήτων ανάπτυξης με αντίστοιχα εργαλεία, στο χειρισμό του ανθρώπινου παράγοντα και στο κρίσιμο θέμα της εκπαίδευσης των φοιτητών σε θέματα διασφάλισης ποιότητας. Επίσης, προτείνονται αντίστοιχες λύσεις και πρότυπα, που μπορούν να εφαρμοστούν από τους υπεύθυνους ανάπτυξης.       
Η τέταρτη ενότητα παρέχει ανατροφοδότηση από την εμπειρική εφαρμογή των ευέλικτων μεθόδων στη βιομηχανία. Δύο από τα κεφάλαια της ενότητας προέρχονται από μεγάλες διεθνείς βιομηχανίες ανάπτυξης λογισμικού, επισημαίνοντας την επέκταση των ευέλικτων μεθόδων σε περιοχές, όπου κυριαρχούσαν μέχρι σήμερα οι παραδοσιακές μέθοδοι ανάπτυξης λογισμικού. Τα κεφάλαια αυτής της ενότητας παρέχουν ανεκτίμητης αξίας αναλύσεις, αναφορές και δεδομένα για την επιτυχή διαχείριση των έργων λογισμικού, της μέτρηση της ποιότητας, και της καθοδηγούμενης από ελέγχους ανάπτυξης λογισμικού. Τέλος παρέχουν οδηγίες για αποφυγή προβλημάτων και καταστροφών μέσα από τις δικές τους εμπειρίες κατά την εφαρμογή των ευέλικτων μεθόδων.        
 
 
 













                                      
 Ευέλικτες Μέθοδοι Ανάπτυξης Λογισμικού
Από την Διδακτορική μου Διατριβή (2007)....
 Επιστροφή
 Ακραίος
 Προγραμματισμός
 Scrum
 Ακραίος
 Προγραμματισμός
 Scrum
 Eπιστροφή
Το πρωτότυπο υλικό όλων των σελίδων, δημιουργός των οποίων είναι ο Παναγιώτης Σφέτσος, παρέχεται σύμφωνα με τους όρους της άδειας:
Creative Commons Αναφορά-Παρόμοια διανομή 3.0 Ελλάδα